import Schema from 'validate'
const roomInfo = new Schema(
  {
    // 楼栋
    building: {
      type: String, // 类型
      required: true, // 非空
      message: '楼栋不能为空', // 提示信息
    },
    // 房号
    room: {
      type: String, // 类型
      required: true, // 非空
      message: '房号不能为空', // 提示信息
    },
    // 姓名
    name: {
      type: String, // 类型
      match: /^[\u4e00-\u9fa5]{2,6}$/, // 中文正则
      message: '姓名中文 2-6位', // 提示信息
    },
    // 手机号码
    mobile: {
      type: String, // 类型
      match: /^1[3-9]\d{9}$/, // 手机号码
      message: '手机不合法', // 提示信息
    },
    // 身份证背面
    idcardBackUrl: {
      type: String, // 类型
      required: true, // 非空
      message: '身份证背面不能为空', // 提示信息
    },
    // 身份证正面
    idcardFrontUrl: {
      type: String, // 类型
      required: true, // 非空
      message: '身份证正面不能为空', // 提示信息
    },
  },
  { strip: false } // 解决 验证对象后，数据丢失属性的问题！！
)


Page({
  data: {
    // 接口文档中查看
    /** * 小区楼栋信息 */
    building: '',
    /** * 业主性别0女1男 */
    gender: 1,
    /** * 身份证背面 */
    idcardBackUrl: '',
    /** * 身份证正面 */
    idcardFrontUrl: '',
    /** * 业主电话 */
    mobile: '',
    /** * 业主姓名 */
    name: '',
    /** * 小区信息 */
    point: '',
    /** * 小区房间信息 */
    room: '',
  },
  async onLoad({ point, building, room, id }) {
    if (id) {
      wx.setNavigationBarTitle({
        title: '编辑房屋信息'
      })
      const res = await wx.http({ url: '/room/' + id })
      console.log(res);
      const { status, ...data } = res.data
      this.setData(data)
      // 
    } else {
      this.setData({
        point,
        building,
        room,
      })
    }

  },

  // 上传身份证图片
  async onChooseMedia(ev) {
    // 自定义属性 data-type  和  ev.currentTarget.dataset.type 来获取
    // 小程序独有的方式  wxml中： mark:type="aaa" js中:ev.mark.type  获取到 "aaa"

    // 调用小程序的api 来选择图片
    const res = await wx.chooseMedia({
      count: 1, // 只能选择一张图片
      // 选择图片还是视频
      mediaType: ['image'],
    })
    // console.log(res)
    // 获取临时文件路径
    const { tempFilePath } = res.tempFiles[0]

    // 把临时文件  上传到 服务器  上传文件 有单独的api ，不是使用 http 请求，
    wx.uploadFile({
      url: wx.http.baseURL + '/upload',
      // 文件临时路径
      filePath: tempFilePath,
      // 获取文件的key 给后端去获取
      name: 'file',
      // 请求头 token
      header: {
        Authorization: `Bearer ${getApp().token}`,
      },
      success: (res) => {
        // console.log(res)
        const data = JSON.parse(res.data)
        // console.log(data.data.url)

        // 无法确定 正面 还是反面  自定义属性
        const type = ev.mark.type // "idcardFrontUrl" || "idcardBackUrl"
        this.setData({
          // 对象设置属性的 灵活写法 中括号 里面单词 表示 变量 ！！！
          [type]: data.data.url,
          // idcardFrontUrl: data.data.url,
          // idcardBackUrl: data.data.url,
        })
      },
      fail: (err) => {
        console.log(err)
      },
    })
  },

  async submitForm() {
    const { building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room, id } = this.data
    const params = { building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room, id }
    const errs = roomInfo.validate(params)

    if (errs.length) {
      return wx.utils.toast(errs[0].message)
    }


    // 删除多余的字段
    delete this.data.__webviewId__
    delete this.data.status

    const { code } = await wx.http.post('/room', this.data)
    // console.log(code);
    if (code !== 10000) return wx.utils.toast('添加房屋失败!')

    if (code !== 10000) return wx.utils.toast('添加房屋失败!')
    wx.showToast({
      title: "添加房屋成功"
    }),

      wx.navigateTo({
        url: "/house_pkg/pages/list/index"
      })
  },
  // 删除上传的身份证
  removePicture(ev) {
    const { type } = ev.mark
    // console.log(type);
    this.setData({
      [type]: ''
    })
  }
})
